package org.mbcorp.sar.service;

import java.security.Principal;
import java.util.List;

import org.mbcorp.sar.model.Fase;
import org.mbcorp.sar.model.Solicitud;

public interface SolicitudService {

	public Solicitud grabar(Solicitud created, Principal currentUser);

    public Solicitud eliminar(Integer solicitudId) throws RuntimeException;

    public List<Solicitud> buscarTodos();

    public Solicitud buscarPorId(Integer id);
    
    public List<Solicitud> buscarListaPorId(Integer id, Principal currentUser);

    public Solicitud actualizar(Solicitud updated) throws RuntimeException;
    
    public List<Solicitud> buscarPorFiltrosAreaEstadoFechaSolicitante(Solicitud solicitud, Principal currentUser);
	
	public List<Solicitud> buscarPrioritarios();
	
	public List<Solicitud> buscarPorFiltrosClienteFechaEstimadoNoPrioritarios(Solicitud solicitud);
	
	public Solicitud armarSolicitud(Integer solicitudId);
	
	public void armarColisionesHorarios(Solicitud solicitud);
	
	public Solicitud actualizarModelo(Solicitud solicitud);
	
	public List<Solicitud> buscarProgramados();
	
	public Solicitud enviarProgramacion(Solicitud solicitud);
	
	public Solicitud reenviarProgramacion(Solicitud solicitud);
	
	public List<Solicitud> buscarPendientesAprobacionProgramacion(Principal currentUser); 
	
	public void aprobarProgramacion(Solicitud solicitud);
	
	public void aprobarProgramacionFueraPlazo(Solicitud solicitud);
	
	public void rechazarProgramacion(Solicitud solicitud);
	
	public void devolverProgramacion(Solicitud solicitud);	
	
	public boolean iniciarAtencion(Solicitud solicitud, Fase fase);
}
